DirectoryReaderSync
Nicht standardisiert: Diese Funktion ist nicht standardisiert. Wir raten davon ab, nicht-standardisierte Funktionen auf produktiven Webseiten zu verwenden, da sie nur von bestimmten Browsern unterstützt werden und sich in Zukunft ändern oder entfernt werden können. Unter Umständen kann sie jedoch eine geeignete Option sein, wenn es keine standardisierte Alternative gibt.
Veraltet: Diese Funktion wird nicht mehr empfohlen. Obwohl einige Browser sie möglicherweise noch unterstützen, könnte sie bereits aus den relevanten Webstandards entfernt worden sein, in Kürze entfernt werden oder nur noch aus Kompatibilitätsgründen bestehen. Vermeiden Sie die Verwendung und aktualisieren Sie vorhandenen Code, falls möglich; siehe die Kompatibilitätstabelle am Ende dieser Seite, um Ihre Entscheidung zu unterstützen. Beachten Sie, dass diese Funktion jederzeit aufhören könnte zu funktionieren.
Das DirectoryReaderSync
-Interface ermöglicht es Ihnen, die Einträge in einem Verzeichnis zu lesen.
Warnung: Dieses Interface ist veraltet und befindet sich nicht mehr auf dem Standardpfad. Verwenden Sie es nicht mehr. Verwenden Sie stattdessen die File and Directory Entries API.
Grundkonzepte
Bevor Sie die einzige Methode in diesem Interface, readEntries()
, aufrufen, erstellen Sie das DirectoryEntrySync
-Objekt. Aber DirectoryEntrySync (sowie FileEntrySync
) ist kein Datentyp, den Sie zwischen einer aufrufenden Anwendung und einem Web Worker-Thread übergeben können. Das ist kein großes Problem, da es nicht wirklich notwendig ist, dass die Hauptanwendung und der Worker-Thread dasselbe JavaScript-Objekt sehen; sie müssen nur auf dieselben Dateien zugreifen können. Sie können dies tun, indem Sie anstelle einer Liste von Einträgen eine Liste von filesystem:
URLs übergeben, die einfach Strings sind. Sie können auch die filesystem:
URL verwenden, um den Eintrag mit resolveLocalFileSystemURL()
nachzuschlagen. Das bringt Sie zurück zu einem DirectoryEntrySync (sowie FileEntrySync)-Objekt.
Beispiel
Im folgenden Codeausschnitt von HTML5Rocks (web.dev) erstellen wir Web Worker und übergeben Daten von diesen an die Hauptanwendung.
// Taking care of the browser-specific prefixes.
window.resolveLocalFileSystemURL =
window.resolveLocalFileSystemURL || window.webkitResolveLocalFileSystemURL;
// Create web workers
const worker = new Worker("worker.js");
worker.onmessage = (e) => {
const urls = e.data.entries;
urls.forEach((url) => {
window.resolveLocalFileSystemURL(url, (fileEntry) => {
// Print out file's name.
console.log(fileEntry.name);
});
});
};
worker.postMessage({ cmd: "list" });
Das Folgende ist der worker.js
-Code, der den Inhalt des Verzeichnisses abrufen kann.
// worker.js
// Taking care of the browser-specific prefixes.
self.requestFileSystemSync =
self.webkitRequestFileSystemSync || self.requestFileSystemSync;
// Global for holding the list of entry file system URLs.
const paths = [];
function getAllEntries(dirReader) {
const entries = dirReader.readEntries();
for (const entry of entries) {
// Stash this entry's filesystem in URL
paths.push(entry.toURL());
// If this is a directory, traverse.
if (entry.isDirectory) {
getAllEntries(entry.createReader());
}
}
}
// Forward the error to main app.
function onError(e) {
postMessage(`ERROR: ${e.toString()}`);
}
self.onmessage = (e) => {
const cmd = e.data.cmd;
// Ignore everything else except our 'list' command.
if (!cmd || cmd !== "list") {
return;
}
try {
const fs = requestFileSystemSync(TEMPORARY, 1024 * 1024 /* 1MB */);
getAllEntries(fs.root.createReader());
self.postMessage({ entries: paths });
} catch (e) {
onError(e);
}
};
Methode
readEntries()
Gibt eine Liste von Einträgen aus einem bestimmten Verzeichnis zurück. Rufen Sie diese Methode so lange auf, bis ein leeres Array zurückgegeben wird.
Syntax
readEntries()
Parameter
Keine.
Rückgabewert
Array, das FileEntrySync
und DirectoryEntrySync
enthält.
Ausnahmen
Diese Methode kann eine DOMException mit den folgenden Codes auslösen:
Ausnahme | Beschreibung |
---|---|
NOT_FOUND_ERR |
Das Verzeichnis existiert nicht. |
INVALID_STATE_ERR |
Das Verzeichnis wurde seit dem ersten Aufruf von readEntries geändert. |
SECURITY_ERR |
Der Browser hat festgestellt, dass es nicht sicher war, die Metadaten nachzuschlagen. |
Spezifikationen
Dieses Feature ist nicht mehr Teil einer Spezifikation. Es ist nicht mehr auf dem Weg, ein Standard zu werden.